package com.example.book_system.service;

import com.example.book_system.common.Result;
import com.example.book_system.entity.Book;
import com.example.book_system.entity.ReadHistory;
import com.example.book_system.entity.Reader;

import java.util.List;
import java.util.Map;

/**
 * @author BlueRose
 */
public interface IReaderService {
    /**
     * 这个接口用借书
     * @apiNote 借书的接口
     * @param params isbn id
     * @return 借阅结果
     */
    Result<String> borrowBook(Map<String, String> params);

    /**
     * 这个接口用于还书
     * @apiNote 还书的接口
     * @param params isbn id
     * @return 还书结果
     */
    Result<String> returnBook(Map<String, String> params);

    /**
     * 该接口为书籍的分页查询
     * @param currentPage 当前显示页
     * @param pageSize 每页的大小
     * @param name 书名
     * @return 书籍列表
     */
    Result<List<Book>> findBook(int currentPage, int pageSize, String name);

    /**
     * 该接口为借阅记录的查询
     * @param params Id
     * @return 借阅记录列表
     */
    Result<List<ReadHistory>> getReadHistory(Map<String, String> params);

    /**
     * 该接口为查询用户信息的方法
     * @param id 用户id
     * @return 用户信息
     */
    Result<Reader> someReader(int id);

    /**
     * 该接口用于修改用户信息
     * @param reader 需要修改的信息
     * @return 修改结果
     */
    Result<String> changeReader(Reader reader);

    /**
     * 该接口用于修改用户的密码
     * @param id 修改用户的id
     * @param oldPassword 修改用户的原密码
     * @param newPassword 修改用户的新密码
     * @return 修改结果
     */
    Result<String> changePassword(int id, String oldPassword, String newPassword);

    /**
     * 该接口用于用户登录
     * @param account 用户id
     * @param password 用户密码
     * @return 登录结果
     */
    Result<String> login(String account, String password);

    /**
     * 该接口用于用户注册
     * @param account 账户
     * @param password 密码
     * @param name 昵称
     * @return 注册结果
     */
    Result<String> register(String account, String password, String name);
}
